package br.gov.ibama.client.menu;

import java.util.List;

import br.gov.ibama.client.comum.DadosDeFuncionalidade;
import br.gov.ibama.client.comum.DadosDeModulo;
import br.gov.ibama.client.comum.PrototipoVisaoIndice;
import br.gov.ibama.client.comum.PrototipoVisaoPopup;
import br.gov.ibama.client.visao.VisaoIndice;
import br.gov.ibama.client.visao.VisaoPopup;
import br.gov.ibama.client.visao.aluno.VisaoAluno;
import br.gov.ibama.client.visao.cargo.VisaoCargo;
import br.gov.ibama.client.visao.cidade.VisaoCidade;
import br.gov.ibama.client.visao.dadosPessoais.VisaoPopupAlteraSenha;
import br.gov.ibama.client.visao.disciplina.VisaoDisciplina;
import br.gov.ibama.client.visao.escola.VisaoEscola;
import br.gov.ibama.client.visao.frequencia.VisaoPopupFrequencia;
import br.gov.ibama.client.visao.funcionario.VisaoFuncionario;
import br.gov.ibama.client.visao.matricula.VisaoMatricula;
import br.gov.ibama.client.visao.nota.VisaoPopupNota;

public class MenuAdministrador {

	private DadosDeModulo cidades;
	private DadosDeModulo escola;
	private DadosDeModulo aluno;
	private DadosDeModulo disciplina;
	private DadosDeModulo cargo;
	private DadosDeModulo funcionario;
	private DadosDeModulo matricula;
	private DadosDeModulo frequencia;
	private DadosDeModulo notas;

	public void criaMenu(List<DadosDeModulo> dadosDeModulos) {

		/**
		 * ##################################################
		 * ########## Modulo Cidades		 ###############
		 * ##################################################
		 */
		cidades = new DadosDeModulo("Cidade");
		cidades.adicionaDadosDeFuncionalidade(new DadosDeFuncionalidade(
				"Cidades",
				new PrototipoVisaoIndice() {

					public VisaoIndice criaVisao() {
						return new VisaoCidade();
					}
				}));

		dadosDeModulos.add(cidades);

		/**
		 * ##################################################
		 * ########## Modulo Escola		 ###############
		 * ##################################################
		 */
		escola = new DadosDeModulo("Escola");
		escola.adicionaDadosDeFuncionalidade(new DadosDeFuncionalidade(
				"Escola",
				new PrototipoVisaoIndice() {

					public VisaoIndice criaVisao() {
						return new VisaoEscola();
					}
				}));

		dadosDeModulos.add(escola);

		/**
		 * ##################################################
		 * ########## Modulo Aluno		 ###############
		 * ##################################################
		 */
		aluno = new DadosDeModulo("Aluno");
		aluno.adicionaDadosDeFuncionalidade(new DadosDeFuncionalidade(
				"Aluno",
				new PrototipoVisaoIndice() {

					public VisaoIndice criaVisao() {
						return new VisaoAluno();
					}
				}));
		
		

		dadosDeModulos.add(aluno);
		
		/**
		 * ##################################################
		 * ########## Modulo Aluno		 ###############
		 * ##################################################
		 */
		disciplina = new DadosDeModulo("Disciplina");
		disciplina.adicionaDadosDeFuncionalidade(new DadosDeFuncionalidade(
				"Disciplina",
				new PrototipoVisaoIndice() {

					public VisaoIndice criaVisao() {
						return new VisaoDisciplina();
					}
				}));

		dadosDeModulos.add(disciplina);
		
		/**
		 * ##################################################
		 * ########## Modulo Cargo      	  ###############
		 * ##################################################
		 */
		cargo = new DadosDeModulo("Cargo");
		cargo.adicionaDadosDeFuncionalidade(new DadosDeFuncionalidade(
				"Cargo",
				new PrototipoVisaoIndice() {

					public VisaoIndice criaVisao() {
						return new VisaoCargo();
					}
				}));

		dadosDeModulos.add(cargo);
		
		/**
		 * ##################################################
		 * ########## Modulo Funcionario      ###############
		 * ##################################################
		 */
		funcionario = new DadosDeModulo("Funcionário");
		funcionario.adicionaDadosDeFuncionalidade(new DadosDeFuncionalidade(
				"Funcionário",
				new PrototipoVisaoIndice() {

					public VisaoIndice criaVisao() {
						return new VisaoFuncionario();
					}
				}));

		dadosDeModulos.add(funcionario);
		
		/**
		 * ##################################################
		 * ########## Modulo Matricula        ###############
		 * ##################################################
		 */
		matricula = new DadosDeModulo("Matrícula");
		matricula.adicionaDadosDeFuncionalidade(new DadosDeFuncionalidade(
				"Matrícula",
				new PrototipoVisaoIndice() {

					public VisaoIndice criaVisao() {
						return new VisaoMatricula();
					}
				}));

		dadosDeModulos.add(matricula);

		/**
		 * ##################################################
		 * ########## Modulo Frequência       ###############
		 * ##################################################
		 */
		frequencia = new DadosDeModulo("Frequência");
		frequencia.adicionaDadosDeFuncionalidade(new DadosDeFuncionalidade(
				"Frequência",
				new PrototipoVisaoPopup() {
					
					public VisaoPopup criaVisao() {
						return new VisaoPopupFrequencia("Consultar frequência");
					}
				}));

		dadosDeModulos.add(frequencia);

		/**
		 * ##################################################
		 * ########## Modulo Notas       ###############
		 * ##################################################
		 */
		notas = new DadosDeModulo("Notas");
		notas.adicionaDadosDeFuncionalidade(new DadosDeFuncionalidade(
				"Notas",
				new PrototipoVisaoPopup() {
					
					public VisaoPopup criaVisao() {
						return new VisaoPopupNota("Notas");
					}
				}));

		dadosDeModulos.add(notas);
	}
}
